Currently pure priority scheduling is often combined with a rate limiter (policing or shaping) to guarantee minimal throughput for lower priority traffic. Also Weighted Round Robin is applied to guarantee a specific minimal rate to different traffic classes, but this does not guarantee a latency prioritization. Both systems cannot be used for greedy traffic which is driven by end-system congestion control like Transmission Control Protocol TCP without losing the low latency advantage (current TCPs create big queues).
Additionally, these solutions have fixed bandwidth limitations (in some cases as for weighted round robin, made relative to current link capacity if this fluctuates) and don't balance the weights over the classes according to the level of congestion (balance capacity to the number of flows that are active in each class).
Alternatively a shared or coupled active queue management AQM can be applied on both queues to balance the flow rates which steers the congestion control algorithm in the end-systems by sending correct mark/drop signals. TCP can be congested controlled by dropping or marking packets, but there stay per flow at least 1 or 2 packets in flight, due to minimum window in the congestion control of (dc)tcp; if all packets were marked, their window will not be reduced below 1 packet, meaning that at least 1 or 2 unacknowledged packets are always sent by tcp. If more packets are in flight than the bandwidth delay product, they will end up in the queue of the bottleneck link. So this is certainly the case if there are more TCP flows active than the bandwidth delay product. If pure priority scheduling is used, the priority class will continuously have packets in the queue and lower priority flows will starve.
It is an object of the present invention to provide a packet scheduling system that allows fair prioritization and/or latency without starving flows.